プライバシーモードでもiPhoneでも追跡? エンジニアが知っておくべき「HSTS Super Cookies」
こんにちは、せーのです。 みなさんは数日前から軽く話題になっているクッキーについてご存知でしょうか。その名も「HSTS Super Cookies」と言います。このクッキーは通常のブラウザモードはもちろん、クッキーなどを残さない「プライバシーモード」果ては同一iCloudアカウントのiPhoneまで追跡できる、というではないですかなにそれこわい。 ということで今日はこの「HSTS Super Cookies」とは何者で、どういう仕組みでこうなっているのか、現時点での対応状況をご紹介します。
まずは見てください。
まずは百聞は一件に如かず、ということでこちらを御覧ください。
何か数字と文字が合わさったパスワード的なものが出てきていますでしょうか。これがいわゆる「HSTS Super Cookies」を使用した追跡のデモとなります。 この数字と文字の組み合わせはHSTSという機能を使用してブラウザから生成した固有値となります。リロードしても同じ組み合わせが表示されるかと思います。Chromeでこの記事を見ている方はこのURLをコピーしてプライバシーモードで開いてみてください。同じ組み合わせが表示されるかと思います。プライバシーモードで開いた方は設定からクッキーを削除してリロードしてみてください。同じ組み合わせが表示されるかと思います(プライバシーモードで開く前にクッキーを削除すると変わります)。 このしつこさが今ちょっとした問題になっておりまして、同じ組み合わせが表示される=追跡可能、ということですから、プライバシーモードでも追跡可能な悪質なクッキーを使ってプライバシーモードでもユーザーの行動が筒抜けになる可能性がある、と話題になってるわけです。
仕組み
さてこのクッキー、一体どういう仕組みになっているのでしょうか。 まず前提として抑えておきたい技術は「HSTS」という技術です。最近のHTTPSで接続するWebサイトはHTTPで接続してもHTTPSにリダイレクトして繋ぎ直すものが多いですが、これは仕組み的にはHTTPで一旦つないで、HTTPSの同URLに飛ばすわけなのでその間に攻撃されるリスクがあります。HSTSという機能を実装しているブラウザは[Strict-Transport-Security]というヘッダがついているWebサイトを記録し、次回にそのサイトへのHTTPアクセスがあった場合はブラウザ側で判断し、直接HTTPSで接続しに行くというセキュリティ技術です。
この概要を聞いてピン、と来る人もいるかと思いますがHSTSは「ブラウザ内に情報を保存する」という仕組みになっていまして、それが今回の現象につながっています。 HSTSではアドレスの一文字一文字に対してtrueかfalseのbitに変換、それをバイナリ値(PIN、と言います)としてブラウザ内に保存します。そうすることで20億以上のタグ付けが可能になります。上で表示した組み合わせはこのバイナリ値をbase36変換したものです。
経緯
Sam Greenhalghさんというイギリスのコンサルティングの方がこのHSTSという仕組みを悪用することでプライバシーの危険に晒すことができることを発見致しました。通常のクッキーはクライアント内に保存され、ブラウザのプライバシーモードではそのクッキーは参照されない仕様になっています。ですがHSTSはブラウザ内にクッキーとは別の形式で保存されるためプライバシーモードでも参照が可能になるのです。そして更にこのHSTSの値は発行元のWebサイトだけではなく、他のWebサイトからもreadが可能、という事です。この2つの特徴を組み合わせてユーザーがどのサイトを閲覧したかをプライバシーモードからでも取得することが可能になるわけです。
各ブラウザの対応状況
Chrome
Chromeチームは早くからこの問題について議論を重ね、結果をchroniumプロジェクトに反映させてきました。
- https://code.google.com/p/chromium/issues/detail?id=104935
- https://code.google.com/p/chromium/issues/detail?id=258667
Chromeチームの結論としては「プライバシーとセキュリティはトレードオフの関係にある」というものでした。 つまりこの問題は「通常モードでのHSTSのPINをプライバシーモードから参照することは出来るが、逆は出来ない。だからいんじゃね」という、とてもGoogleっぽい結論を出しています。
Firefox
Firefoxの考えはGoogleとは違い、バージョン34.0にて改善されています。ですのでFirefoxの場合は最新バージョンにアップデートすればOKです。
IE
IEの場合はもっと単純。そもそもHSTSに対応していないのでPINも保存しようがない、というものです。いいのか悪いのか。。。
Safari
Safariは今のところノータッチ、という現状です。ですので一番やっかいなのはSafariかも知れません。特にiPhoneやiPadに入っているSafariはHSTS PINをiCloudに保存するため、どうやっても消えない、とGreenhalghさんは言っています。が、実機で試してみたところ数分ごとにPINが変わっている事を確認しました。Appleがこっそり改善したのでしょうか。実験の結果は安全だ、と言えるかと思います。結論としては、、、自己責任で。
まとめ
いかがでしたでしょうか。ひとまず各ブラウザとも対策や見解を出していますので、ひとまず安心と言ったところでしょうか。 私はどちらかと言うとHSTSという技術そのものに未来を感じました。これからのWebシステムはhttpsで繋ぐことは常識となりつつあります。HSTSもそのうち常識と言われる技術になっていくかと思います。また、PINを利用した別の面白いことも出来そうな気がします。これからもこの技術をチェックしていきたいと思います。
参考サイト
- http://www.radicalresearch.co.uk/lab/hstssupercookies/
- http://www.forbes.com/sites/thomasbrewster/2015/01/05/super-cookies-can-track-you-over-google-incognito/
- http://ha.ckers.org/blog/20100413/chrome-fixes-sts-privacy-issue/
- http://www.theregister.co.uk/2015/01/06/https_can_be_set_as_your_supercookie/
- https://tools.ietf.org/html/draft-ietf-websec-strict-transport-sec-14
- http://arstechnica.com/security/2015/01/browsing-in-privacy-mode-super-cookies-can-track-you-anyway/
- http://www.translatorscafe.com/cafe/units-converter/numbers/calculator/decimal-to-base-36/